package com.soteind.system.notifications;

import com.soteind.exceptions.ExceptionMessage;
import java.util.List;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;

public abstract class EmailSender {

    private class SMTPAuthenticator extends Authenticator {

        private String username;
        private String userpass;

        public SMTPAuthenticator(String username, String userpass) {
            //compiled code
            throw new RuntimeException("Compiled Code");
        }

        public PasswordAuthentication getPasswordAuthentication() {
            //compiled code
            throw new RuntimeException("Compiled Code");
        }
    }
    private List<ExceptionMessage> errors;
    private Properties properties;
    private Session session;
    private Transport transport;
    private List<Email> sentEmails;
    private List<Email> notSentEmails;

    public EmailSender() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    public boolean send(List<Email> emails) {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    public boolean send(Email email) {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    private boolean sendEmail(Email email) {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    private boolean sslSend(Email email) {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    private boolean normalSend(Email email) {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    private boolean loadConfiguration() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    private boolean openAndConnectSession() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    private boolean closeSession() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    public abstract String getMailServer();

    public abstract Integer getPortNumber();

    public abstract String getPassWord();

    public abstract String getUserName();

    public List<ExceptionMessage> getErrors() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    public abstract boolean isUserSSL();

    public List<Email> getSentEmails() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }

    public List<Email> getNotSentEmails() {
        //compiled code
        throw new RuntimeException("Compiled Code");
    }
}
